package com.etc.ui;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Scanner;

import com.etc.dao.DeptDao_HashMap;
import com.etc.entity.Dept;

/**
 * 输入可以循环操作(包含菜单,可以选择用户的操作)
 * 
 * @author Administrator
 *
 */
public class DeptManage_HashMap {

	private DeptDao_HashMap dd = new DeptDao_HashMap();

	/**
	 * 主菜单
	 */
	public void mainMenu() {
		Scanner input = new Scanner(System.in);
		while (true) {
			System.out.println("请输入您的选择0.退出系统1.增加部门2.显示所有部门3.修改4.删除5.按照部门编号查询6.按照部门名称模糊查询");
			int choice = input.nextInt();
			switch (choice) {
			case 0:
				System.out.println("系统将会退出,再见~");
				System.exit(0);
				break;
			case 1:
				// 调用输入的方法
				inputDept();
				break;
			case 2:
				// 调用显示所有的方法
				showDept();
				break;

			case 3:
				// 调用修改部门的方法
				updateDept();
				break;
			case 4:
				// 调用删除所有的方法
				delDept();
				break;

			case 5:
				// 按照部门编号查询
				showDeptByNo();
				break;
			case 6:
				// 按照部门模糊查询
				showDeptByLike();
				break;
			default:
				break;
			}
		}
	}

	/**
	 * 增加部门的UI层的方法
	 */
	public void inputDept() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入部门的名称,地址");
		String deptName = input.next();
		String deptAddress = input.next();
		Dept dept = new Dept(deptName, deptAddress);
		// 调用Dao添加的方法
		boolean flag = dd.addDept(dept);
		if (flag) {
			System.out.println("部门 [" + deptName + "] 增加成功");
		} else {
			System.out.println("部门 [" + deptName + "] 增加失败");
		}
	}

	/**
	 * 修改部门信息Ui层方法
	 */
	public void updateDept() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入部门的编号,新名称,新地址");
		int deptNo = input.nextInt();
		String deptName = input.next();
		String deptAddress = input.next();
		Dept dept = new Dept(deptNo, deptName, deptAddress);
		// 调用Dao添加的方法
		boolean flag = dd.updateDept(dept);
		if (flag) {
			System.out.println("部门 [" + deptName + "] 修改成功");
		} else {
			System.out.println("部门 [" + deptName + "] 修改失败");
		}
	}

	/**
	 * 根据编号查询部门信息
	 */
	public void showDeptByNo() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入部门的编号");
		int deptNo = input.nextInt();

		// 调用Dao添加的方法
		Dept dept = dd.getDeptByNo(deptNo);

		if (dept != null) {
			System.out.println("找到了部门编号为 [" + deptNo + "] 的部门的信息");
			System.out.println(dept);
		} else {
			System.out.println("没有找到部门编号 [" + deptNo + "] 的信息");
		}
	}

	/**
	 * 数据显示
	 */
	public void showDeptByLike() {
		Scanner input = new Scanner(System.in);
		System.out.println("请输入部门的名称的关键字,例如:开");
		String cons = input.next();

		// 调用Dao添加的方法
		HashMap<Integer, Dept> hashMap = dd.getDeptByLike(cons);

		if (hashMap.size() == 0) {
			System.out.println("没有找到部门包含 [" + cons + "] 的信息");
		} else {
			System.out.println("找到了名称中包含 [" + cons + "] 的部门的信息");
			// 此处输出结果
			Iterator<Integer> itor = hashMap.keySet().iterator();

			while (itor.hasNext()) {
				// 得到key
				Integer key = itor.next();
				System.out.println(hashMap.get(key));
			}
		}

	}

	/**
	 * 显示
	 */
	public void showDept() {
		System.out.println("************UI 层显示部门的记录信息如下***************");
		// 顺便做显示
		HashMap<Integer, Dept> hashMap = dd.getDept();
		// 此处输出结果
		Iterator<Integer> itor = hashMap.keySet().iterator();

		while (itor.hasNext()) {
			// 得到key
			Integer key = itor.next();
			System.out.println(hashMap.get(key));
		}
	}

	/**
	 * 删除的菜单
	 */
	public void delDept() {

		Scanner input = new Scanner(System.in);
		System.out.println("请输入要删除部门的编号");
		int deptNo = input.nextInt();

		// 调用Dao添加的方法
		boolean flag = dd.deleteDeptByNo(deptNo);

		if (flag) {
			System.out.println("编号为 [" + deptNo + "] 的部门已经删除");
		} else {
			System.out.println("没有找到编号 [" + deptNo + "] 的部门信息,删除失败");
		}
	}
}
